home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / mwerks / mwfopenrf.c < prev   
Text File  |  1996-02-14  |  1KB  |  51 lines

  1. /*
  2. ** mwfopenrf - Open resource fork as stdio file for CodeWarrior.
  3. **
  4. ** Jack Jansen, CWI, August 1995.
  5. */
  6.  
  7. #if defined(__MWERKS__) && !defined(USE_GUSI)
  8. #include <stdio.h>
  9. #include <unix.h>
  10. #include <errno.h>
  11. #include "errno_unix.h"
  12.  
  13. FILE *
  14. fopenRF(name, mode)
  15.     char *name;
  16.     char *mode;
  17. {
  18.     int fd;
  19.     int modebits = -1;
  20.     int extramodebits = 0;
  21.     char *modep;
  22.     
  23.     for(modep=mode; *modep; modep++) {
  24.         switch(*modep) {
  25.         case 'r': modebits = O_RDONLY; break;
  26.         case 'w': modebits = O_WRONLY; extramodebits |= O_CREAT|O_TRUNC; break;
  27.         case 'a': modebits = O_RDONLY;
  28.                   extramodebits |= O_CREAT|O_APPEND;
  29.                   extramodebits &= ~O_TRUNC;
  30.                   break;
  31.         case '+': modebits = O_RDWR; 
  32.                   extramodebits &= ~O_TRUNC;
  33.                   break;
  34.         case 'b': extramodebits |= O_BINARY;
  35.                   break;
  36.         default:
  37.                   errno = EINVAL;
  38.                   return NULL;
  39.         }
  40.     }
  41.     if ( modebits == -1 ) {
  42.         errno = EINVAL;
  43.         return NULL;
  44.     }
  45.     fd = open(name, modebits|extramodebits|O_RSRC);
  46.     if ( fd < 0 )
  47.         return NULL;
  48.     return fdopen(fd, mode);
  49. }
  50. #endif /* __MWERKS__ */
  51.